// rollup.config.js
import json from 'rollup-plugin-json';  //  解析json
import serve from 'rollup-plugin-serve'; // 本地服务器
import nodeResolve from 'rollup-plugin-node-resolve';
import vuePlugin from 'rollup-plugin-vue' // 处理vue文件
import htmlTemplate from 'rollup-plugin-generate-html-template'; // html模板,有这个不需要上面的
import replace from '@rollup/plugin-replace';
import commonjs from 'rollup-plugin-commonjs';  // 用来解析有些plugin 不支持esm
import html from '@rollup/plugin-html' // 生成html



// import Vue from 'vue'
// import watch from 'rollup-watch' // 监听文件变换  自带了
// const buble = require('@rollup/plugin-buble');


const path = require('path');

const resolve = function (filePath) {
  return path.join(__dirname, filePath)
}

export default {
  input: 'src/main.js',  // 入口文件
  /*
    String 生成包的格式。 下列之一:
      amd – 异步模块定义，用于像RequireJS这样的模块加载器
      cjs – CommonJS，适用于 Node 和 Browserify/Webpack
      esm – 将软件包保存为 ES 模块文件，在现代浏览器中可以通过 <script type=module> 标签引入
      iife – 一个自动执行的功能，适合作为<script>标签。（如果要为应用程序创建一个捆绑包，您可能想要使用它，因为它会使文件大小变小。）
      umd – 通用模块定义，以amd，cjs 和 iife 为一体
      system - SystemJS 加载器格式
  */
  format:'iife',
  // 输出文件
  output: {
    file: resolve('dist/index.js'), // 输出文件名字
    format: 'cjs',  // https://juejin.cn/post/6844903974236389389  介绍的很清楚
    footer: '/* follow me on Twitter! @rich_harris   */',   // 在bundele.js 文件的头部添加信息
    banner: '/* my-library version */', // 在bundele.js 文件底部添加信息
    // globals: { // 全局变量
    //   Vue: 'Vue'
    // }
  },
  // 插件注册
  plugins: [
    json(),
    htmlTemplate({
      template: "index.html",  // 模板文件，
      target: 'dist/index.html', // 生成的目标文件
    }),
    nodeResolve(),
    // commonjs({
    //   // include: 'node_modules/**',
    // }),
    replace({
      'process.env.NODE_ENV': JSON.stringify('development'),
      'process.env.VUE_ENV': JSON.stringify('browser')
    }),
    vuePlugin(), //vue解析插件 用来解析vue模板文件
    serve({
      headers: {
        'Access-Control-Allow-Origin': '*',  // 请求头
        foo: 'bar'
      },
      contentBase: ['public', 'dist'],
      host: 'localhost', // 主机地址
      port: 3000,
      open: true,  // 自动打开浏览器

    })
  ],
  // 全局模块,用来
  globals: {
    jquery: '$'
  },
  treeShake:true, // 是不是使用tree shake 默认为true
  context:'', // 模块的this指向 undefined 少数情况可能需要指向window 
};



